(find-file-noselect): On VMS, maybe set buffer-file-name
authorRichard M. Stallman <rms@gnu.org>
Sun, 2 May 1993 12:46:26 +0000 (12:46 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sun, 2 May 1993 12:46:26 +0000 (12:46 +0000)
to the truename.  Depends on find-file-not-true-dirname-list

lisp/files.el

index eb61fff1de1f8b1eda8b45a9024ca0ea6d603d96..038dc538a66938e90c13796912023b7eabe5aa68 100644 (file)
@@ -484,6 +484,13 @@ Type \\[describe-variable] directory-abbrev-alist RET for more information."
              (concat "~" (substring filename (match-end 0)))))
     filename))
 
+(defvar find-file-not-true-dirname-list nil
+  "*List of logical names for which visiting shouldn't save the true dirname.
+On VMS, when you visit a file using a logical name that searches a path,
+you may or may not want the visited file name to record the specific
+directory where the file was found.  If you *do not* want that, add the logical
+name to this list as a string.")
+
 (defun find-file-noselect (filename &optional nowarn)
   "Read file FILENAME into a buffer and return the buffer.
 If a buffer exists visiting FILENAME, return that one, but
@@ -577,7 +584,16 @@ The buffer is not selected, just returned to the caller."
                 (setq hooks (cdr hooks))))))
          ;; Find the file's truename, and maybe use that as visited name.
          (setq buffer-file-truename (abbreviate-file-name truename))
-         (setq buffer-file-number number) 
+         (setq buffer-file-number number)
+         ;; On VMS, we may want to remember which directory in a search list
+         ;; the file was found in.
+         (and (eq system-type 'vax-vms)
+              (let (logical)
+                (if (string-match ":" (file-name-directory filename))
+                    (setq logical (substring (file-name-directory filename)
+                                             0 (match-beginning 0))))
+                (not (member logical find-file-not-true-dirname-list)))
+              (setq buffer-file-name buffer-file-truename))
          (if find-file-visit-truename
              (setq buffer-file-name (setq filename buffer-file-truename)))
          ;; Set buffer's default directory to that of the file.